# tools/pdf_tools.py
import fitz
import os
import sys
from typing import Optional

# Add parent dir
parent_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(parent_dir)
from mcp_utils import safe_tool


@safe_tool
def read_pdf(path: str, max_pages: Optional[int] = 1) -> dict:
    """读取 PDF 文件前 max_pages 页的文本内容"""
    if not os.path.exists(path):
        raise FileNotFoundError(f"文件 '{path}' 不存在。")
    if not path.lower().endswith(".pdf"):
        raise ValueError("文件必须是 PDF 格式。")

    doc = fitz.open(path)
    # 在关闭文档前，获取并保存 page_count
    total_pages = doc.page_count

    texts = []
    for i in range(min(total_pages, max_pages)):
        page = doc.load_page(i)
        texts.append(page.get_text("text"))

        # 2. 现在可以安全地关闭文档了
    doc.close()

    # 3. 返回时使用之前保存的变量
    return {"page_count": total_pages, "text": "\n".join(texts)}
